package com.shotgun.mycommon.webservice.util;

import com.shotgun.mycommon.webservice.aspect.MethodLogAop;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;

/***
* *---------------------------
* @Description: 系统方法日志工具
* ***---------------------------
* @author: wulingming
* @date: 2025年11月18日 10:42
* @version: v1.0
* ****---------------------------
*/
public class MethodLogUtils {
    private static final Logger log = LoggerFactory.getLogger(MethodLogAop.class);

    public static final String INVOKE_SELF_STR = "系统方法";
    private static final int MAX_STR_LENGTH = 2000;




    /***
    * *---------------------------
    * @Description: 记录请求信息
    * **---------------------------
    * @author: wulingming
    * @date: 2025年11月18日 10:49
    * @version: v1.0
    * ****---------------------------
    */
    public static void logRequest(String platform, String requestId , String url, String methodType, String className, String methodName, String params) {
        log.info("系统方法日志工具-- {}请求信息 (req)：requestId={}, url={}, methodType={}, classAndMethod={}.{} ,------------params={}",
                platform, requestId, url,  methodType,className, methodName, params);
    }
    /***
    * *---------------------------
    * @Description: 记录返回信息
    * **---------------------------
    * @author: wulingming
    * @date: 2025年11月18日 10:49
    * @version: v1.0
    * ****---------------------------
    */
    public static void logResponse(String platform, String requestId , String url, String methodType, String className, String methodName, String params, String result, long costTime) {
        if (StringUtils.hasText(result)&& result.length()> MAX_STR_LENGTH){
            result= result.substring(0, MAX_STR_LENGTH);
        }
        log.info("系统方法日志工具-- {}返回信息 (req & resp)：requestId={}, url={}, methodType={}, classAndMethod={}.{} ,------------params={}, ------result={}, ------总耗时(毫秒)={}",
                platform, requestId, url,  methodType,className, methodName, params, result, costTime);
    }

    /***
    * *---------------------------
    * @Description: 记录异常信息
    * **---------------------------
    * @author: wulingming
    * @date: 2025年11月18日 10:50
    * @version: v1.0
    * ****---------------------------
    */
    public static void logError(String platform, String requestId , String url, String methodType, String className, String methodName, String params, String result, long costTime, Exception e) {
        if (StringUtils.hasText(result) && result.length() > MAX_STR_LENGTH) {
            result = result.substring(0, MAX_STR_LENGTH);
        }
        log.error("系统方法日志工具-- {}异常信息 (req & resp)：requestId={}, url={}, methodType={}, classAndMethod={}.{} ,------------params={}, ------result={}, ------总耗时(毫秒)={}",
                platform, requestId, url,  methodType,className, methodName, params, result, costTime, e);
    }


}
